package com.clothing.customization.repository;

import com.clothing.customization.entity.Activity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

@Repository
public interface ActivityRepository extends JpaRepository<Activity, Long> {
    
    // 获取最近5条活动
    List<Activity> findTop5ByOrderByCreateTimeDesc();
    
    // 根据用户ID查询活动列表
    List<Activity> findByUserIdOrderByCreateTimeDesc(Long userId);
    
    // 根据类型查询活动列表
    List<Activity> findByTypeOrderByCreateTimeDesc(String type);
    
    // 根据用户ID和类型查询活动列表
    List<Activity> findByUserIdAndTypeOrderByCreateTimeDesc(Long userId, String type);
    
    // 统计未读活动数量
    @Query("SELECT COUNT(a) FROM Activity a WHERE a.isRead = false")
    long countUnreadActivities();
    
    // 根据创建时间范围统计活动数量
    long countByCreateTimeBetween(Date startTime, Date endTime);
    
    // 根据用户ID和创建时间范围查询活动列表
    List<Activity> findByUserIdAndCreateTimeBetweenOrderByCreateTimeDesc(Long userId, Date startTime, Date endTime);
    
    // 根据类型和创建时间范围查询活动列表
    List<Activity> findByTypeAndCreateTimeBetweenOrderByCreateTimeDesc(String type, Date startTime, Date endTime);
    
    // 根据用户ID、类型和创建时间范围查询活动列表
    List<Activity> findByUserIdAndTypeAndCreateTimeBetweenOrderByCreateTimeDesc(Long userId, String type, Date startTime, Date endTime);
    
    // 统计用户活动数量
    long countByUserId(Long userId);
    
    // 统计类型活动数量
    long countByType(String type);
    
    // 根据用户ID和是否已读查询活动列表
    List<Activity> findByUserIdAndIsReadOrderByCreateTimeDesc(Long userId, boolean isRead);
    
    // 根据类型和是否已读查询活动列表
    List<Activity> findByTypeAndIsReadOrderByCreateTimeDesc(String type, boolean isRead);
} 